/*
 * Include.h
 *
 *	Author: stravant
 *	Description:
 *		
 */

#ifndef INCLUDE_H_
#define INCLUDE_H_

#include <cassert>

#include "../core/Bits.h"
#include "../core/Atomic.h"
#include "../core/RefCounted.h"
#include "../core/Platform.h"
#include "../core/BasicTypes.h"

#include <string>

//nullptr, C++0x forwards comaptibility
#define nullptr 0

//unreachable macro
#define unreachable assert(0)

//number range
template <typename T>
bool inRange(T n, T lower, T upper) {
	return n >= lower && n <= upper;
}

class NonCopyable {
protected:
	NonCopyable() {}
	~NonCopyable() {}
private:
	NonCopyable(const NonCopyable& other) {}
	NonCopyable& operator=(const NonCopyable& other) {return *this;}
};

typedef std::string String;

#endif /* INCLUDE_H_ */
